iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
Python

進擊的Python系列 第 16

Day15-網路爬蟲(希斯特莉亞)

  • 分享至 

  • xImage
  •  

我想要跟姊姊一樣喔!大家好!我是希斯特莉亞~我分享Python網路爬蟲

https://ithelp.ithome.com.tw/upload/images/20240823/20163257QbZYig77fV.png
圖片來源:(https://k.sina.cn/article_7045218198_1a3ed7f9600100errd.html)

Python網路爬蟲

就像在網際網路上四處爬行的蜘蛛,自動化地從網頁上擷取所需資料。Python因為簡潔語法和豐富第三方函式庫,成為最受歡迎爬蟲語言之一

為什麼需要 cookies?

  • 身份識別:網站透過 cookies 辨識使用者,例如:登入狀態、購物車內容
  • 追蹤行為:網站利用 cookies 追蹤使用者瀏覽行為,個性化推薦、廣告投放

requests、Beautiful Soup、Scrapy

  • requests: 發送 HTTP 請求,向網頁伺服器索取資料,並處理 cookies
  • Beautiful Soup: 解析 HTML 和 XML 文件,方便提取所需的資料
  • Scrapy: 一個功能強大的爬蟲框架,整合了 requests 和 Beautiful Soup,並提供許多額外功能。例如:多線程下載、自動化跟隨連結、資料儲存

使用 requests 和 Beautiful Soup 爬取需要登入的網站

import requests
from bs4 import BeautifulSoup

# 設定 headers,模擬瀏覽器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari   
/537.36'
}

# 發送 POST 請求,提交登入資訊
login_url = 'https://example.com/login'
data = {'username': 'your_username', 'password': 'your_password'}
response = requests.post(login_url, headers=headers, data=data)

# 提取 cookies
cookies = response.cookies

# 發送請求,並使用 cookies
url = 'https://example.com/profile'
response = requests.get(url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.text, 'html.parser')

# 提取資料
profile_info = soup.find('div', class_='profile-info')
# ... 根據網頁結構提取所需資料

Scrapy優勢

  • 框架性: 提供一套完整爬蟲開發框架,簡化開發流程
  • 高效性: 支援多線程下載、中間件等,提升爬取效率
  • 可擴充性: 提供豐富的擴充機制,可以自定義各種功能
import scrapy

class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['https://example.com']

    def parse(self, response):
        # 解析網頁,提取資料
        for link in response.css('a'):
            yield response.follow(link.url, self.parse)

注意事項與道德規範

  • 尊重機器人協議: 遵守網站的機器人協議,避免過度頻繁的請求
  • 尊重版權: 爬取的資料僅供個人學習研究使用,不得用商業用途或侵犯他人著作權
  • 隱私保護: 避免爬取涉及個人隱私的資料

進階主題

  • JavaScript渲染: 對於使用 JavaScript 動態載入內容網頁,可以使用 SeleniumPuppeteer 來模擬瀏覽器行為
  • 資料清洗: 對爬取的資料進行清洗、轉換,使其更適合分析
  • 資料儲存: 選擇適合的資料儲存方式,例如: CSVJSON資料庫
  • 分布式爬蟲: 利用多台機器進行爬取,提高爬取效率

結論

Python 網路爬蟲結合 requests、Beautiful Soup 和 Scrapy 等工具,能幫助我們高效地從網際網路上獲取所需資料,在使用過程中,務必遵守相關法律法規和道德規範

https://ithelp.ithome.com.tw/upload/images/20240823/20163257l11svP6UuF.png
圖片來源:(https://forum.gamer.com.tw/C.php?bsn=43473&snA=10817)


上一篇
Day14-讀取與儲存文字檔案(九大巨人)
下一篇
Day16-Pandas資料分析(尤米爾)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言